/* *
 *
 *  (c) 2009-2019 Øystein Moseng
 *
 *  Class that can keep track of elements added to DOM and clean them up on
 *  destroy.
 *
 *  License: www.highcharts.com/license
 *
 *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
 *
 * */
"use strict";
import H from "../../../parts/Globals.js";
var doc = H.win.document;
import U from "../../../parts/Utilities.js";
var extend = U.extend;
import HTMLUtilities from "./htmlUtilities.js";
var removeElement = HTMLUtilities.removeElement;
/* eslint-disable no-invalid-this, valid-jsdoc */
/**
 * @private
 * @class
 */
var DOMElementProvider = function () {
  this.elements = [];
};
extend(DOMElementProvider.prototype, {
  /**
   * Create an element and keep track of it for later removal.
   * Same args as document.createElement
   * @private
   */
  createElement: function () {
    var el = doc.createElement.apply(doc, arguments);
    this.elements.push(el);
    return el;
  },
  /**
   * Destroy all created elements, removing them from the DOM.
   * @private
   */
  destroyCreatedElements: function () {
    this.elements.forEach(function (element) {
      removeElement(element);
    });
    this.elements = [];
  },
});
export default DOMElementProvider;
